import os
from openai import OpenAI

class LLMService:
    def __init__(self):
        self.api_key = os.getenv("DASHSCOPE_API_KEY")
        self.client = OpenAI(
            api_key=self.api_key,
            base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
        ) if self.api_key else None

    def get_nutrition_advice(self, nutrition_text, user_profile, net_weight):
        """使用OpenAI获取营养建议，包含用户详细信息和净含量信息"""
        if not self.api_key:
            return None, "OpenAI API密钥未配置"

        # 构建简化的提示词，减少处理时间
        prompt = f"""你是一名专业的营养师，请根据以下信息为用户提供食品营养建议：

用户基本信息：
- 身高: {user_profile.height}cm
- 体重: {user_profile.weight}kg
- 年龄: {getattr(user_profile, 'age', '未知')}岁
- BMI: {getattr(user_profile, 'bmi', '未知')}

食品信息：
- 净含量: {net_weight}g/ml
- 营养成分: {nutrition_text}

请提供简洁的营养建议，包括：
1. 该食品是否适合用户
2. 需要注意的营养成分
3. 建议食用量
4. 搭配建议

请用中文回复，简洁专业："""

        # 调用OpenAI API
        try:
            print(f"正在调用LLM API，提示词长度: {len(prompt)}")
            response = self.client.chat.completions.create(
                model="qwen-max",
                messages=[
                    {
                        "role": "system",
                        "content": "你是营养师，提供简洁专业的营养建议。"
                    },
                    {
                        "role": "user",
                        "content": prompt
                    }
                ],
                max_tokens=800,
                temperature=0.5
            )

            advice = response.choices[0].message.content
            print(f"LLM API调用成功，返回建议长度: {len(advice)}")
            return advice, None

        except Exception as e:
            print(f"LLM API调用失败: {str(e)}")
            return None, f"OpenAI API调用失败: {str(e)}"

llm_service=LLMService()